package com.tbit.main.service;

import com.tbit.main.util.TimeUtil;

import java.util.concurrent.ExecutionException;
import java.util.function.Function;

/**
 * @author LMY
 * @create 2021-04-13 17:55
 */
public interface GuavaCacheService {


    /**
     * 查询缓存
     *
     * @param key        缓存建，不能为空
     * @param function   如果没有缓存 调用改callableh函数返回对象，可为空
     * @param funcParam  function函数的调用参数
     * @param expireTime 过期时间毫秒，可为空
     * @param timeUtil
     * @param <T>
     * @param <M>
     * @return
     */
    <T, M> T get(Integer key, Function<M, T> function, M funcParam, Long expireTime, TimeUtil timeUtil) throws ExecutionException;
}
